/**axios封装
 * 请求拦截、相应拦截、错误统一处理
 */
import axios from 'axios';
import store from '../store';
import { MessageBox, Message } from 'element-ui';
import Router from '../router'

// 创建axios实例
var instance = axios.create({
  timeout: 10000,
  baseURL: 'http://139.224.239.35:8090',
  // responseType: 'json',
  withCredentials: false, // 表示跨域请求时是否需要使用凭证
  transformRequest: [
    function (data) {
      let ret = ''
      for (let it in data) {
        ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
      }
      ret = ret.substring(0, ret.lastIndexOf('&'));
      return ret
    }
  ],
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
  }
});
instance.interceptors.request.use(function (config) {
  config.headers.token = store.state.token;
  config.headers.tokenHead = store.state.tokenHead;
  config.headers.jsession_id = store.state.jsession_id;
  return config;
}, function (error) {
  // 对请求错误做些什么
  alert(error)
  return Promise.reject(error);
});

instance.interceptors.response.use(function (response) {
if (response.data.code === 4012) {
  Message({
  	message: "离开时间过长,已自动离线，请重新登录!",
  	type: "warning",
  	offset: screen.height / 2 - 100,
  	center: true
  })
  // Storage.localRemove('token')
  //清除token,过路由拦截
  localStorage.removeItem('token')
  //路由到login页面
  setTimeout(Router.push('/login'),1500)
}
    return response
}, function (error) {
    return Promise.reject(error)
    })

// instance.interceptors.response.use(function (config) {
//   return config
// },
// function (error) {
//   alert(error)
//   return Promise.reject(error);
// })

// 设置post请求头
// instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
// instance.defaults.headers.get['Content-Type'] = 'application/x-www-form-urlencoded';
/**
 * 跳转登录页
 * 携带当前页面路由，以期在登录页面完成登录后返回当前页面
 */
// const toLogin = () => {
//     // 清除用户登录信息
//     window.localStorage.clear();
//     router.replace({
//         path: '/login'
//     });
// }
// /**
//  * 请求失败后的错误统一处理
//  * @param {Number} status 请求失败的状态码
//  */

// const errorHandle = (status, other) => {
//     switch (status) {
//         // 401: 未登录状态，跳转登录页
//         case 401:
//             toLogin();
//             break;
//         case 403:
//             setTimeout(() => {
//                 toLogin();
//             },
//                 1000);
//             break;
//         case 404: break;
//         default:
//             console.log(other);
//     }
// }
// //请求拦截器
// instance.interceptors.request.use(req => {
//     //这里可以根据项目需求在请求前进行拦截处理并返回req
//     //例子（为所有请求加上token）
//     let token = localStorage.getItem('token') || '';
//     req.headers.common['authorization'] = token
//     return req;

// })
// // 响应拦截器
// instance.interceptors.response.use(
//     //http请求200
//     res => {
//         if (res.status === 200) {
//             //这里是我和后台定的状态码
//             if (res.data.code == 3000 || res.data.code == 2000) {
//                 return Promise.resolve(res)
//             } else {
//                 //退出成功，未认证
//                 if (res.data.code == 2006 || res.data.code == 2001) {
//                     toLogin();
//                 } else {//未知错误
//                     return Promise.reject(res)
//                 }
//             }
//         } else {
//             return Promise.reject(res)
//         }
//     },
//     // 请求失败
//     error => {
//         const {
//             response
//         } = error;
//         if (response) {
//             // 请求已发出，但是不在2xx的范围
//             errorHandle(response.status, response.data.message);
//             return Promise.reject(response);
//         } else {
//             // 处理断网的情况
//             return Promise.reject(` {
//              status: -1,
//              message: '断网了',
//              data: null
//          }`);
//         }
//     });
export default instance;
